package vista;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;

import titiritero.ControladorJuego;
import titiritero.vista.*;
import modelo.*;

public class VentanaDelJuego extends Ventana {

	private static final long serialVersionUID = 1L;
	
	private final int UBICACION_X = 20;
	private final int UBICACION_VIDAS_Y = 50;
	private final int UBICACION_PUNTAJE_Y = 100;
	private final int UBICACION_NIVEL_Y = 200;
	private final int UBICACION_PODER_Y = 350;
	
	public static final int PANEL_LATERAL_W = 100;
	
	private BufferedImage panel;
	private ImagenAnimada simbolos;
	
	public VentanaDelJuego(int ancho, int alto, ControladorJuego unControlador, String archImagenes) {
		super(ancho+PANEL_LATERAL_W, alto, unControlador);

		this.panel = new BufferedImage(PANEL_LATERAL_W, getSize().height, BufferedImage.TYPE_INT_RGB);
		simbolos = new ImagenAnimada(Juego.IMAGENES_PATH+archImagenes, 24, 24);
	}
	
	public void paint (Graphics g) {
		getGrafico().drawImage(panel, getSize().width-PANEL_LATERAL_W, 0, null);
		super.paint(g);
	}
	
	/*
	 * METODOS PARA DIBUJAR EN EL PANEL:
	 */
	public void mostrarVidas (int vidas) {
		limpiarCuadrado(0, UBICACION_VIDAS_Y, PANEL_LATERAL_W, 40);
		dibujarSimbolo(0, UBICACION_X, UBICACION_VIDAS_Y);
		dibujarString("x "+vidas, UBICACION_X+30, UBICACION_VIDAS_Y+18);
	}

	public void mostrarPuntaje (int puntaje) {
		limpiarCuadrado(0, UBICACION_PUNTAJE_Y, PANEL_LATERAL_W, 40);
		dibujarSimbolo(1, UBICACION_X, UBICACION_PUNTAJE_Y);
		dibujarString(": "+puntaje, UBICACION_X+30, UBICACION_PUNTAJE_Y+18);
	}
	
	public void mostrarNivel (int nivel) {
		limpiarCuadrado(0, UBICACION_NIVEL_Y-10, PANEL_LATERAL_W, 50);
		dibujarString("NIVEL: "+nivel, UBICACION_X, UBICACION_NIVEL_Y);
	}
	
	public void mostrarResistencia (int resistencia) {
		limpiarCuadrado(0, UBICACION_PODER_Y, PANEL_LATERAL_W, 40);
		if(resistencia > 0) {
			dibujarSimbolo(2, UBICACION_X, UBICACION_PODER_Y );
			dibujarString(": "+resistencia, UBICACION_X+30, UBICACION_PODER_Y+18);
		}
	}
	
	private void limpiarCuadrado (int x, int y, int w, int h) {
		Graphics superficieParaDibujar =  this.panel.getGraphics();
		superficieParaDibujar.setColor(Color.BLACK);
		superficieParaDibujar.fillRect(x, y, w, h);
	}
	
	private void dibujarSimbolo (int frame, int x, int y) {
		Graphics superficieParaDibujar =  this.panel.getGraphics();
		simbolos.setPosicionable(new Coordenada(x, y));
		simbolos.setFrame(frame);
		simbolos.dibujar(superficieParaDibujar);
	}
	
	private void dibujarString (String texto, int x, int y) {
		Graphics superficieParaDibujar =  this.panel.getGraphics();
		superficieParaDibujar.setColor(Color.WHITE);
		superficieParaDibujar.drawString(texto, x, y);
	}
}
